package main

import "fmt"

func main() {
	var ch = make(chan int, 20)
	for i := 0; i < 10; i++ {
		ch <- i
	}
	//1.close主要用来关闭channel通道其用法为close(channel)
	//2.并且是在生产者的地方关闭channel，而不是在消费者的地方关闭
	//3.并且关闭channel后，便不可再向channel中继续存入数据，但是可以继续从channel中读取数据
	close(ch)
	//ch <- 11 //panic: runtime error: send on closed channel

	//两种遍历channel的方法，
	//方法1
	length := len(ch)
	for j := 0; j < length; j++ {
		value := <-ch
		fmt.Printf("%v ", value)
	}
	fmt.Println("")

	//方法2
	for i := range ch {
		fmt.Println(i) //输出0 1 2 3 4 5 6 7 8 9
	}
}
